package com.zh.webcommon.common.param.secure;

import com.fasterxml.jackson.annotation.JacksonAnnotationsInside;
import com.fasterxml.jackson.databind.annotation.JsonSerialize;

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import static com.zh.webcommon.common.param.secure.MaskFieldEnum.CUSTOM;

@Target(ElementType.FIELD)
@Retention(RetentionPolicy.RUNTIME)
@JacksonAnnotationsInside //表示自定义自己的注解
@JsonSerialize(using = PrivacyMaskSerializer.class) //该注解使用的序列化方式
public @interface PrivacyMask {
    /**
     * 如果不指定type，则默认为 CUSTOM（自定义）
     */
    MaskFieldEnum type() default CUSTOM;

    /**
     * 当 type = CUSTOM 时，才生效
     */
    int prefixNoMaskLen() default 0;

    /**
     * 当 type = CUSTOM 时，才生效
     */
    int suffixNoMaskLen() default 0;

}